package org.example.array;

public class Spiral_matrix {
    public static void main(String[] args) {
        //给定一个正整数 n，生成一个包含 1 到 n^2 所有元素，且元素按顺时针顺序螺旋排列的正方形矩阵。
        //
        //示例:
        //
        //输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

        //螺旋数组
        int n = 10;
        int[][] nums = new int[n][n];
        int loop = 1;//当前循环次数
        int count = 1;//要存储的数据
        int start = 0;//每层循环开始填充的元素的坐标
        while(loop<=n/2){
            int i = start;
            int j = start;
            for (;j<n-loop;j++) {
                nums[i][j] = count++;
            }
            for (;i<n-loop;i++) {
                nums[i][j] = count++;
            }
            for (;j>start;j--) {
                nums[i][j] = count++;
            }
            for (;i>start;i--) {
                nums[i][j] = count++;
            }
            loop++;
            start++;
        }
        if(n%2==1){
            nums[start][start] = count++;
        }
        for (int i = 0; i < nums.length; i++) {
            System.out.print("{ ");
            for (int j = 0; j < nums.length; j++) {
                System.out.print(nums[i][j]+" ");
            }
            System.out.println(" }");
        }
    }
}
